import request from '@/utils/request';

// 登录
export function login(data) {
  return request({
    url: '/api/auth/login',
    method: 'post',
    data
  });
}

// 企业用户注册
export function registerCompany(data) {
  console.log('准备发送企业注册请求，数据字段:', Object.keys(data));
  
  // 创建数据的副本并删除前端专用字段
  const submitData = {
    companyName: data.companyName,
    companyAddress: data.companyAddress,
    companyType: data.companyType,
    legalName: data.legalName,
    legalPhone: data.legalPhone,
    legalIdCard: data.legalIdCard,
    bankAccount: data.bankAccount,
    username: data.username,
    password: data.password
  };
  
  console.log('处理后的注册数据:', {
    ...submitData,
    password: '******' // 不打印实际密码
  });
  
  return request({
    url: '/api/auth/register/company',
    method: 'post',
    data: submitData,
    headers: {
      'Content-Type': 'application/json'
    },
    transformRequest: [(data) => {
      console.log('发送到服务器的数据:', {
        ...JSON.parse(JSON.stringify(data)),
        password: '******'
      });
      return JSON.stringify(data);
    }],
    transformResponse: [(data) => {
      console.log('收到服务器响应:', data);
      if (typeof data === 'string') {
        try {
          const parsed = JSON.parse(data);
          console.log('解析后的响应数据:', parsed);
          return parsed;
        } catch (e) {
          console.error('解析响应数据失败:', e);
          console.log('原始响应数据:', data);
          throw new Error('服务器响应格式错误');
        }
      }
      return data;
    }]
  }).catch(error => {
    console.error('企业注册请求失败:', error);
    if (error.response) {
      console.error('错误状态码:', error.response.status);
      console.error('错误数据:', error.response.data);
      throw new Error(error.response.data?.message || '注册失败，请稍后重试');
    } else if (error.request) {
      console.error('未收到服务器响应:', error.request);
      throw new Error('服务器无响应，请检查网络连接');
    } else {
      console.error('请求配置错误:', error.message);
      throw new Error('请求配置错误: ' + error.message);
    }
  });
}

// 零工用户注册
export function registerWorker(data) {
  console.log('发送零工注册请求:', {
    username: data.username,
    // 不记录密码
    name: data.name,
    phone: data.phone,
    skillType: data.skillType,
    // 其他非敏感字段...
  });
  
  // 创建数据的副本并删除前端专用字段
  const submitData = {
    name: data.name,
    phone: data.phone,
    idCard: data.idCard,
    bankAccount: data.bankAccount,
    skillType: data.skillType,
    username: data.username,
    password: data.password
    // 不包含userType字段，由后端设置
  };
  
  return request({
    url: '/api/auth/register/worker',
    method: 'post',
    data: submitData,
    headers: {
      'Content-Type': 'application/json'
    },
    // 添加请求变换，详细记录错误
    transformResponse: [function(data) {
      // 如果数据是字符串，尝试解析
      if (typeof data === 'string') {
        try {
          return JSON.parse(data);
        } catch (e) {
          console.error('解析响应数据失败:', e);
          console.log('原始响应数据:', data);
          return {
            code: 500,
            message: '数据解析失败: ' + data
          };
        }
      }
      return data;
    }]
  }).catch(error => {
    // 处理特定的错误信息，如"用户名已存在"
    if (error.response && error.response.data && error.response.data.message) {
      console.error('零工注册错误:', error.response.data.message);
      // 抛出新的错误，保留原始错误信息
      throw new Error(error.response.data.message);
    }
    // 对于其他错误，直接抛出
    throw error;
  });
}

// 添加步骤验证接口
export function validateStep(data) {
  console.log('发送验证请求:', data); // 添加请求日志
  return request({
    url: '/api/auth/validate/company-register',
    method: 'post',
    data
  });
} 

// 重置密码
export function resetPassword(data) {
  console.log('发送重置密码请求:', {
    username: data.username,
    // 不记录密码
  });
  
  return request({
    url: '/api/auth/reset-password',
    method: 'post',
    data: {
      username: data.username,
      newPassword: data.newPassword
    },
    transformResponse: [function(data) {
      if (typeof data === 'string') {
        try {
          return JSON.parse(data);
        } catch (e) {
          console.error('解析响应数据失败:', e);
          return {
            code: 500,
            message: '数据解析失败: ' + data
          };
        }
      }
      return data;
    }]
  }).catch(error => {
    if (error.response && error.response.data && error.response.data.message) {
      console.error('重置密码错误:', error.response.data.message);
      throw new Error(error.response.data.message);
    }
    throw error;
  });
}